Server systems generally provide a fixed number of options. For example, there are a fixed number of PCI Express IO slots and a fixed number of hard drive bays, which often are delivered empty as they provide future upgradability. The customer is expected to gauge future needs and select a server chassis category that will serve present and future needs. Historically, and particularly with x86-class servers, predicting the future needs has been achievable because product improvements from one generation to another have been incremental.
With the advent of scalable servers, the ability to predict future needs has become less obvious. For example, in the class of servers within a 2U chassis, it is possible to install 120 compute nodes in an incremental fashion. Using this server as a data storage device, the user may require only 4 compute nodes, but may desire 80 storage drives. Using the same server as a pure compute function focused on analytics, the user may require 120 compute nodes and no storage drives. The nature of scalable servers lends itself to much more diverse applications which require diverse system configurations. As the diversity increases over time, the ability to predict the system features that must scale becomes increasingly difficult.
An example of a typical server system is shown in FIG. 1. The traditional server system has fixed areas for 24 hard drives along its front surface and a fixed area for compute subsystem (also called motherboard) and a fixed area for IO expansion (PCI slots). This typical server system does not provide scalability of the various computer components. Thus, it is desirable to create a system and method to scale storage and networking within a server system and it is to this end that this disclosure is directed. The benefit of this scalability is a much more flexible physical system that fits many user applications.